package com.tic.dao;


import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;

//import java.io.FileInputStream;
import java.io.IOException;
//import java.io.File;
//import java.io.FileOutputStream;
import java.io.InputStream;
//import java.io.OutputStream;
//import java.nio.ByteBuffer;  
//import java.nio.channels.FileChannel;  
import java.sql.Blob;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
//import java.util.Date;
import java.util.List;
//import java.util.Properties;

import org.apache.log4j.Logger;

import oracle.jdbc.OracleTypes;
import oracle.sql.BLOB;
import utiles.AppProperties;
import utiles.ConexionPool;
import utiles.utilitarios;

//import com.tic.dto.UsuarioDTO;
import com.portal.dto.UsuarioDTO;
import com.portal.dto.ComboDTO; //import com.far.dto.ComboDTO;
import com.tic.dto.TicketDTO;
import com.tic.vo.TicketVO;
import com.portal.dao.AccesoDAO;
import java.io.OutputStream;


public class TicketDAO {
	private static Logger log = Logger.getLogger(PerfilDAO.class);
	String pkgVar = (AppProperties.getProperty("aplicacion", "PACKAGE"));
	String horaActual = utilitarios.getHoraActual();
	private static String rutaArchivosTicket = (AppProperties.getProperty("aplicacion", "RUTA_ARCHIVOS"));
	private static String rutaVer = (AppProperties.getProperty("aplicacion", "RUTA_VER"));
	
	public List<UsuarioDTO> getUserStaf(String IdUser) throws SQLException, IOException{
		
		Connection conn = ConexionPool.getConnectionPool();	

		List<UsuarioDTO> listUserPerf = new ArrayList<UsuarioDTO>();
			try {
				String query = "{ call "+pkgVar+".PKG_TIC_TICKET.getUserStaf(?,?) }"; 	       
				CallableStatement  stmt = conn.prepareCall(query);
				stmt.setString(1, IdUser);
				stmt.registerOutParameter(2, OracleTypes.CURSOR);
				stmt.execute();
				ResultSet rs = (ResultSet)stmt.getObject(2);
				while (rs.next()) {
					UsuarioDTO sopMA = new UsuarioDTO();
					sopMA.setIdUsuario(rs.getString(1));
					sopMA.setNomUsuario(rs.getString(2));
					listUserPerf.add(sopMA);
	            }
				
	            rs.close();
	            stmt.close();
	        } catch (SQLException ex) {  
	           log.error(horaActual+"Error TicketDAO.getUserStaf SQLException: " +ex.getMessage());
	        	System.out.println(ex.getMessage());
	        } finally {
				conn.close();
				conn = null;
	        }
	        return listUserPerf;		
		}	
	
	public List<TicketDTO> getTicket(String idArea, String idUser, String idAreaStaff, String jefeArea, String Abierto, String Mios, String idEstado, String area, String sede, String texto) throws SQLException, IOException{
		Connection conn = ConexionPool.getConnectionPool();	

		List<TicketDTO> listUserPerf = new ArrayList<TicketDTO>();
			try {
				String query = "{ call "+pkgVar+".PKG_TIC_TICKET.getTicket(?,?,?,?,?,?,?,?,?,?) }"; 	       
				CallableStatement  stmt = conn.prepareCall(query);
				stmt.setString(1, idArea);
				stmt.setString(2, idUser);
				stmt.setString(3, idAreaStaff);
				stmt.setString(4, Abierto);
				stmt.setString(5, Mios);
				stmt.setString(6, idEstado);
				stmt.setString(7, area);
				stmt.setString(8, sede);
				stmt.setString(9, texto);
				stmt.registerOutParameter(10, OracleTypes.CURSOR);
				stmt.execute();
				ResultSet rs = (ResultSet)stmt.getObject(10);
				while (rs.next()) {
					TicketDTO sopMA = new TicketDTO();
					sopMA.setIdTicket(rs.getString(1));
					sopMA.setFecIngreso(rs.getString(2));
					sopMA.setIdUsuarioSolicitante(rs.getString(3));
					sopMA.setIdUserStaff(rs.getString(4));
					sopMA.setIdOrigenReq(rs.getString(5));
					sopMA.setStrResumen(rs.getString(6));
					sopMA.setStrAbierto(rs.getString(7));
					sopMA.setBlobArchivo(rs.getString(8));
					sopMA.setIdEstadoSolcitante(rs.getString(9));
					sopMA.setIdEstadoResponsable(rs.getString(10));
					sopMA.setStrAvance(rs.getString(11));
					sopMA.setIdArea(rs.getString(12));
					sopMA.setIdSede(rs.getString(13));
					sopMA.setIdEstadoResponsable(rs.getString(14));
					sopMA.setIdEstadoSolcitante(rs.getString(15));
					sopMA.setIdPrioridad(rs.getString(16));
					sopMA.setIdEstado(rs.getString(17));
					sopMA.setStrDetalle(rs.getString(18));
					listUserPerf.add(sopMA);
	            }
				
	            rs.close();
	            stmt.close();
	        } catch (SQLException ex) {  
	           log.error(horaActual+"Error TicketDAO.getTicket SQLException: " +ex.getMessage());
	        	System.out.println(ex.getMessage());
	        } finally {
				conn.close();
				conn = null;
	        }
	        return listUserPerf;		
		}	
	
	public List<ComboDTO> getTicketEstadistica(String idArea, String idUser, String idAreaStaff) throws SQLException, IOException{
		Connection conn = ConexionPool.getConnectionPool();	

		List<ComboDTO> listUserPerf = new ArrayList<ComboDTO>();
			try {
				String query = "{ call "+pkgVar+".PKG_TIC_TICKET.getTicketEstadistica(?,?,?,?) }"; 	       
				CallableStatement  stmt = conn.prepareCall(query);
				stmt.setString(1, idArea);
				stmt.setString(2,idUser);
				stmt.setString(3, idAreaStaff);
				stmt.registerOutParameter(4, OracleTypes.CURSOR);
				stmt.execute();
				ResultSet rs = (ResultSet)stmt.getObject(4);
				while (rs.next()) {
					ComboDTO sopMA = new ComboDTO();
					sopMA.setDesc(rs.getString(1));
					listUserPerf.add(sopMA);
	            }
				
	            rs.close();
	            stmt.close();
	        } catch (SQLException ex) {  
	           log.error(horaActual+" Error TicketDAO.getTicketEstadistica SQLException: " +ex.getMessage());
	        	System.out.println(ex.getMessage());
	        } finally {
				conn.close();
				conn = null;
	        }
	        return listUserPerf;		
		}	
	
	public List<TicketDTO> getEventos(String idTicket, String listaLog) throws SQLException, IOException{
		Connection conn = ConexionPool.getConnectionPool();	
		List<TicketDTO> listUserPerf = new ArrayList<TicketDTO>();
			try {
				String query = "{ call "+pkgVar+".Pkg_tic_ticket.getEventos(?,?,?) }"; 	       
				CallableStatement  stmt = conn.prepareCall(query);
				stmt.setString(1, idTicket);
				stmt.setString(2, listaLog);
				stmt.registerOutParameter(3, OracleTypes.CURSOR);
				stmt.execute();
				ResultSet rs = (ResultSet)stmt.getObject(3);
				while (rs.next()) {
					TicketDTO sopMA = new TicketDTO();
					sopMA.setIdTicket(rs.getString(1));
					sopMA.setFecIngreso(rs.getString(2));
					sopMA.setIdUsuarioDigitador(rs.getString(3));
					sopMA.setStrDetalle(rs.getString(4));
					sopMA.setIdOrigenReq(rs.getString(5));
					sopMA.setBlobArchivo(rs.getString(6));
					sopMA.setStrAvance(rs.getString(7));
					sopMA.setIdEstadoResponsable(rs.getString(8));
					sopMA.setIdEstadoSolcitante(rs.getString(9));
					sopMA.setStrResumen(rs.getString(10));
					
					listUserPerf.add(sopMA);
	            }
				
	            rs.close();
	            stmt.close();
	        } catch (SQLException ex) {  
	           log.error(horaActual+" Error TicketDAO.getTicket SQLException: " +ex.getMessage());
	        	System.out.println(ex.getMessage());
	        } finally {
				conn.close();
				conn = null;
	        }
	        return listUserPerf;		
		}
	
	 public List<TicketDTO> setGrabarEvento(TicketVO tkVO, byte[] bytes) throws SQLException, IOException{
		    String idUser = "";
		    String estado= "";
		    String param[] = new String[6];
			List<TicketDTO> listIDMovTotal = new ArrayList<TicketDTO>();
			Connection conn = ConexionPool.getConnectionPool();	
					try {
						param[2]="soporte@liche.cl";
						String query = "{ call "+pkgVar+".Pkg_tic_ticket.setGrabarEvento(?,?,?,?,?,?,?,?) }";
						CallableStatement  stmt = conn.prepareCall(query);
						stmt.setString(1, tkVO.getIdTicket());
						stmt.setString(2, tkVO.getIdUsuarioDigitador());
						stmt.setString(3, tkVO.getIdEstadoResponsable());
						stmt.setString(4, tkVO.getIdOrigenReq());
						stmt.setString(5, tkVO.getStrDetalle());
						stmt.setString(6, tkVO.getBlobArchivo());
						
						
						if (tkVO.getBlobArchivo()!="") System.out.println(utilitarios.getHoraActual()+" Inicio trabajo con archivo");
						BLOB blob = BLOB.createTemporary(conn, true, BLOB.DURATION_SESSION);
						if (tkVO.getBlobArchivo()!="") System.out.println(utilitarios.getHoraActual()+" blob_os");
						OutputStream blob_os = blob.getBinaryOutputStream();
						
						if (tkVO.getBlobArchivo()!=""){
							System.out.println(utilitarios.getHoraActual()+" blob_os.write");
							blob_os.write(bytes);
						}
						if (tkVO.getBlobArchivo()!="") System.out.println(utilitarios.getHoraActual()+" blob_os.flush");
							blob_os.flush();
						if (tkVO.getBlobArchivo()!="") System.out.println(utilitarios.getHoraActual()+" setBlob");
							stmt.setBlob(7, blob);
						if (tkVO.getBlobArchivo()!="") System.out.println(utilitarios.getHoraActual()+" RECEPCION DE ARCHIVO TERMINADO");
						
						stmt.registerOutParameter(8, OracleTypes.CURSOR);
						stmt.execute();
						ResultSet rs = (ResultSet)stmt.getObject(8);
						while (rs.next()) {
							TicketDTO tick = new TicketDTO();
							tick.setIdTicket(rs.getString(2));
							listIDMovTotal.add(tick);
							String bodyMsg    = rs.getString(3);
							String setSubject = "S:"+rs.getString(6)+" E:"+rs.getString(2)+" "+rs.getString(1); 
//								rs.getString(1)+"evento numero "+rs.getString(2);
							String mailto     = rs.getString(4);
							String mailcc     = rs.getString(5);
							//String mailFrom   = rs.getString(7);
							
							int vEst=AccesoDAO.sendMailLiga(mailto, mailcc, bodyMsg, setSubject, param, "html");
						}
						stmt.close();
					} catch (SQLException ex) {  
						log.error("Error TicketDAO.setGrabarEvento SQLException: " +ex.getMessage());
						System.out.println(ex.getMessage());				
					} finally {
						conn.close();
						conn = null;
					}
					return listIDMovTotal;
		}	
	 
		public List<TicketDTO> getTicketById(String idTicket) throws SQLException, IOException{
			Connection conn = ConexionPool.getConnectionPool();	
			List<TicketDTO> listUserPerf = new ArrayList<TicketDTO>();
				try {
					String query = "{ call "+pkgVar+".Pkg_tic_ticket.getTicketById(?,?) }"; 	       
					CallableStatement  stmt = conn.prepareCall(query);
					stmt.setString(1, idTicket);
					stmt.registerOutParameter(2, OracleTypes.CURSOR);
					stmt.execute();
					ResultSet rs = (ResultSet)stmt.getObject(2);
					while (rs.next()) {
						TicketDTO sopMA = new TicketDTO();
						sopMA.setIdTicket(rs.getString(1));
						sopMA.setIdUserStaff(rs.getString(2));
						sopMA.setIdUsuarioSolicitante(rs.getString(3));
						sopMA.setIdUsuarioDigitador(rs.getString(4));
						sopMA.setIdOrigenReq(rs.getString(5));
						sopMA.setIdTipoTicket(rs.getString(6));
						sopMA.setIdPrioridad(rs.getString(7));
						sopMA.setStrResumen(rs.getString(8));	
						sopMA.setStrDetalle(rs.getString(9));
						sopMA.setStrAbierto(rs.getString(10));
						sopMA.setFecIngreso(rs.getString(11));
						sopMA.setFecCierre(rs.getString(12));
						sopMA.setIdEstadoResponsable(rs.getString(13));
						sopMA.setIdEstadoSolcitante(rs.getString(14));
						sopMA.setFecPrgInicio(rs.getString(15));
						sopMA.setFecPrgFin(rs.getString(16));
						sopMA.setStrPrivado(rs.getString(17));
						sopMA.setIdAreaStaff(rs.getString(18));
						sopMA.setIdTipoOrigen(rs.getString(19));
						sopMA.setBlobArchivo(rs.getString(20));
						listUserPerf.add(sopMA);
		            }
					
		            rs.close();
		            stmt.close();
		        } catch (SQLException ex) {  
		           log.error(horaActual+"Error TicketDAO.getTicketById SQLException: " +ex.getMessage());
		        	System.out.println(ex.getMessage());
		        } finally {
					conn.close();
					conn = null;
		        }
		        return listUserPerf;		
			}	 
		
		public List<ComboDTO> getOrigen(String IdTipo) throws SQLException, IOException{
			Connection conn = ConexionPool.getConnectionPool();	
			List<ComboDTO> listUserPerf = new ArrayList<ComboDTO>();
				try {
					String query = "{ call "+pkgVar+".Pkg_tic_ticket.getOrigen(?,?) }"; 	       
					CallableStatement  stmt = conn.prepareCall(query);
					stmt.setString(1, IdTipo);
					stmt.registerOutParameter(2, OracleTypes.CURSOR);
					stmt.execute();
					ResultSet rs = (ResultSet)stmt.getObject(2);
					while (rs.next()) {
						ComboDTO sopMA = new ComboDTO();
						sopMA.setId(rs.getString(1));
						sopMA.setDesc(rs.getString(2));
						listUserPerf.add(sopMA);
		            }
					
		            rs.close();
		            stmt.close();
		        } catch (SQLException ex) {  
		           log.error(horaActual+"Error TicketDAO.getOrigen SQLException: " +ex.getMessage());
		        	System.out.println(ex.getMessage());
		        } finally {
					conn.close();
					conn = null;
		        }
		        return listUserPerf;		
			}
		public List<ComboDTO> getTipoOrigen(String IdArea) throws SQLException, IOException{
			Connection conn = ConexionPool.getConnectionPool();	
			List<ComboDTO> listUserPerf = new ArrayList<ComboDTO>();
				try {
					String query = "{ call "+pkgVar+".Pkg_tic_ticket.getTipoOrigen(?,?) }"; 	       
					CallableStatement  stmt = conn.prepareCall(query);
					stmt.setString(1, IdArea);
					stmt.registerOutParameter(2, OracleTypes.CURSOR);
					stmt.execute();
					ResultSet rs = (ResultSet)stmt.getObject(2);
					while (rs.next()) {
						ComboDTO sopMA = new ComboDTO();
						sopMA.setId(rs.getString(1));
						sopMA.setDesc(rs.getString(2));
						listUserPerf.add(sopMA);
		            }
					
		            rs.close();
		            stmt.close();
		        } catch (SQLException ex) {  
		           log.error(horaActual+"Error TicketDAO.getTipoOrigen SQLException: " +ex.getMessage());
		        	System.out.println(ex.getMessage());
		        } finally {
					conn.close();
					conn = null;
		        }
		        return listUserPerf;		
			}
		
		 public List<TicketDTO> setGrabarTicket(TicketVO tkVO) throws SQLException, IOException{
			    String idUser = "";
			    String estado= "";
			    String param[] = new String[6];
				List<TicketDTO> listIDMovTotal = new ArrayList<TicketDTO>();
				Connection conn = ConexionPool.getConnectionPool();	
						try {
							//System.out.println(utilitarios.getHoraActual()+" Inicio setGrabarTicket Sin Adjunto");
							String query = "{ call "+pkgVar+".Pkg_tic_ticket.setGrabarTicket(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) }";
						//	String query = "{ call "+pkgVar+".Pkg_per_ticket.setGrabarTicket(1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9
							CallableStatement  stmt = conn.prepareCall(query);
							stmt.setString(1, tkVO.getIdTicket());
							stmt.setString(2, tkVO.getIdUserStaff());
							stmt.setString(3, tkVO.getIdUsuarioSolicitante());
							stmt.setString(4, tkVO.getIdUsuarioDigitador());
							stmt.setString(5, tkVO.getIdOrigenReq());
							stmt.setString(6, tkVO.getIdTipoTicket());
							stmt.setString(7, tkVO.getIdPrioridad());
							stmt.setString(8, tkVO.getStrResumen());
							stmt.setString(9, tkVO.getStrDetalle());
							stmt.setString(10, tkVO.getStrAbiertoSn());
							stmt.setString(11, tkVO.getFecCierre());
							stmt.setString(12, tkVO.getIdEstadoResponsable());
							stmt.setString(13, tkVO.getIdEstadoSolcitante());
							stmt.setString(14, tkVO.getFecPrgInicio());
							stmt.setString(15, tkVO.getFecPrgFin());
							stmt.setString(16, tkVO.getStrPrivadoSn());
							stmt.setString(17, tkVO.getIdAreaStaff());
							stmt.setString(18, tkVO.getBlobArchivo());
							BLOB blob = BLOB.createTemporary(conn, true, BLOB.DURATION_SESSION);
							stmt.setBlob(19, blob);
							stmt.registerOutParameter(20, OracleTypes.CURSOR);
							stmt.execute();
							ResultSet rs = (ResultSet)stmt.getObject(20);
							
							while (rs.next()) {
								TicketDTO tick = new TicketDTO();
								tick.setIdTicket(rs.getString(2));
								listIDMovTotal.add(tick);
								String bodyMsg    = rs.getString(3);
								String setSubject = "S:"+rs.getString(2)+" E:"+rs.getString(6)+" "+rs.getString(1);
								String mailto     = rs.getString(4);
								String mailcc     = rs.getString(5);
								String mailFrom   = rs.getString(7);
								param[0]="";
								param[1]="";
								param[2]="soporte@liche.cl";
								param[3]="";
								param[4]="";
								param[5]="";

								//System.out.println(utilitarios.getHoraActual()+" inicio Metodo enviar mail");
								int vEst=AccesoDAO.sendMailLiga(mailto, mailcc, bodyMsg, setSubject, param, "html");
								
								//System.out.println(utilitarios.getHoraActual()+" termina clase Java E:"+vEst);
							}
							stmt.close();
						} catch (SQLException ex) {  
							log.error("Error TicketDAO.setGrabarTicket SQLException: " +ex.getMessage());
							System.out.println(ex.getMessage());				
						} finally {
							conn.close();
							conn = null;
						}
						return listIDMovTotal;
			}

		 public List<TicketDTO> setGrabarTicketFile(TicketVO tkVO, byte[] bytes) throws SQLException, IOException{
				List<TicketDTO> listIDMovTotal = new ArrayList<TicketDTO>();
				String param[] = new String[6];
				Connection conn = ConexionPool.getConnectionPool();	
						try {

							param[2]="soporte@liche.cl";
							//System.out.println(utilitarios.getHoraActual()+" Inicio setGrabarTicket con Adjunto");
							String query = "{ call "+pkgVar+".Pkg_tic_ticket.setGrabarTicket(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) }";
						//	String query = "{ call "+pkgVar+".Pkg_per_ticket.setGrabarTicket(1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9
							CallableStatement  stmt = conn.prepareCall(query);
							stmt.setString(1, tkVO.getIdTicket());
							stmt.setString(2, tkVO.getIdUserStaff());
							stmt.setString(3, tkVO.getIdUsuarioSolicitante());
							stmt.setString(4, tkVO.getIdUsuarioDigitador());
							stmt.setString(5, tkVO.getIdOrigenReq());
							stmt.setString(6, tkVO.getIdTipoTicket());
							stmt.setString(7, tkVO.getIdPrioridad());
							stmt.setString(8, tkVO.getStrResumen());
							stmt.setString(9, tkVO.getStrDetalle());
							stmt.setString(10, tkVO.getStrAbiertoSn());
							stmt.setString(11, tkVO.getFecCierre());
							stmt.setString(12, tkVO.getIdEstadoResponsable());
							stmt.setString(13, tkVO.getIdEstadoSolcitante());
							stmt.setString(14, tkVO.getFecPrgInicio());
							stmt.setString(15, tkVO.getFecPrgFin());
							stmt.setString(16, tkVO.getStrPrivadoSn());
							stmt.setString(17, tkVO.getIdAreaStaff());
							stmt.setString(18, tkVO.getBlobArchivo());

							//System.out.println(utilitarios.getHoraActual()+" Inicio trabajo con archivo");
							BLOB blob = BLOB.createTemporary(conn, true, BLOB.DURATION_SESSION);
							OutputStream blob_os = blob.getBinaryOutputStream();
							blob_os.write(bytes);
							blob_os.flush();
							stmt.setBlob(19, blob);
							//System.out.println(utilitarios.getHoraActual()+" RECEPCION DE ARCHIVO TERMINADO");						
							stmt.registerOutParameter(20, OracleTypes.CURSOR);
							
							stmt.execute();
							ResultSet rs = (ResultSet)stmt.getObject(20);
							while (rs.next()) {
								TicketDTO tick = new TicketDTO();
								tick.setIdTicket(rs.getString(2));
								listIDMovTotal.add(tick);
								String bodyMsg    = rs.getString(3);
								String setSubject = "S:"+rs.getString(2)+" E:"+rs.getString(6)+" "+rs.getString(1);
								String mailto     = rs.getString(4);
								String mailcc     = rs.getString(5);
								String mailFrom   = rs.getString(7);
								//System.out.println(utilitarios.getHoraActual()+" inicio Metodo enviar mail");
								int vEst=AccesoDAO.sendMailLiga(mailto, mailcc, bodyMsg, setSubject, param, "html");
								
								//System.out.println(utilitarios.getHoraActual()+" termina clase Java");
							}
							stmt.close();
						} catch (SQLException ex) {  
							log.error("Error TicketDAO.setGrabarTicket SQLException: " +ex.getMessage());
							System.out.println(ex.getMessage());				
						} finally {
							conn.close();
							conn = null;
						}
						return listIDMovTotal;
			}		
		 
		 public List setGrabarChek(String idCheck, String idTicket, String strCheck, String strOk, String idUser) throws SQLException, IOException{
			    //String idUser = "";
			    //String estado= "";
				List listIDMovTotal = new ArrayList();
				Connection conn = ConexionPool.getConnectionPool();	
						try {
							String query = "{ call "+pkgVar+".Pkg_tic_ticket.setGrabarChek(?,?,?,?,?) }";
							CallableStatement  stmt = conn.prepareCall(query);
							stmt.setString(1, idCheck);
							stmt.setString(2, idTicket);
							stmt.setString(3, strCheck);
							stmt.setString(4, strOk);
							stmt.setString(5, idUser);
							stmt.execute();
							//System.out.println("Grabo cheklist ID:"+idCheck);
							stmt.close();
						} catch (SQLException ex) {  
							log.error("Error TicketDAO.setGrabarChek SQLException: " +ex.getMessage());
							System.out.println(ex.getMessage());				
						} finally {
							conn.close();
							conn = null;
						}
						return listIDMovTotal;

			}		 
		 
			public List<ComboDTO> getTipoChekList() throws SQLException, IOException{
				Connection conn = ConexionPool.getConnectionPool();	
				List<ComboDTO> listUserPerf = new ArrayList<ComboDTO>();
					try {
						String query = "{ call "+pkgVar+".Pkg_tic_ticket.getTipoChekList(?) }"; 	       
						CallableStatement  stmt = conn.prepareCall(query);
						stmt.registerOutParameter(1, OracleTypes.CURSOR);
						stmt.execute();
						ResultSet rs = (ResultSet)stmt.getObject(1);
						while (rs.next()) {
							ComboDTO sopMA = new ComboDTO();
							sopMA.setId(rs.getString(1));
							sopMA.setDesc(rs.getString(2));
							listUserPerf.add(sopMA);
			            }
						
			            rs.close();
			            stmt.close();
			        } catch (SQLException ex) {  
			           log.error(horaActual+"Error TicketDAO.getTipoChekList SQLException: " +ex.getMessage());
			        	System.out.println(ex.getMessage());
			        } finally {
						conn.close();
						conn = null;
			        }
			        return listUserPerf;		
				}
			
			public List<ComboDTO> getChekListByTicket(String IdTChkL) throws SQLException, IOException{
				Connection conn = ConexionPool.getConnectionPool();	
				List<ComboDTO> listUserPerf = new ArrayList<ComboDTO>();
					try {
						String query = "{ call "+pkgVar+".Pkg_tic_ticket.getChekListByTicket(?,?) }"; 	       
						CallableStatement  stmt = conn.prepareCall(query);
						stmt.setString(1, IdTChkL);
						stmt.registerOutParameter(2, OracleTypes.CURSOR);
						stmt.execute();
						ResultSet rs = (ResultSet)stmt.getObject(2);
						while (rs.next()) {
							ComboDTO sopMA = new ComboDTO();
							sopMA.setId(rs.getString(1));
							sopMA.setDesc(rs.getString(2));
							sopMA.setId2("0");
							sopMA.setDesc2(rs.getString(3));
							listUserPerf.add(sopMA);
			            }
						
			            rs.close();
			            stmt.close();
			        } catch (SQLException ex) {  
			           log.error(horaActual+" Error TicketDAO.getChekListByTicket SQLException: " +ex.getMessage());
			        	System.out.println(ex.getMessage());
			        } finally {
			        	conn.close();
						conn = null;
			        }
			        return listUserPerf;		
				}
			
			  public byte[] getTicketFile(String idTicket) throws SQLException, IOException
			   {  
				  Connection conn = ConexionPool.getConnectionPool();	
			       byte[] data =null;  
			       String nombreArchivo;
			       String rutaArchivo = "";
			       String rutaReturn = "";
			       try {  
			    	    //System.out.println(utilitarios.getHoraActual()+" inicio Clase getFile");
						String query = "{ call "+pkgVar+".Pkg_tic_ticket.getTicketFile(?,?,?) }"; 	       
						CallableStatement  stmt = conn.prepareCall(query);
						stmt.setString(1, idTicket);
						stmt.setString(2, "T");
						stmt.registerOutParameter(3, OracleTypes.CURSOR);
						stmt.execute();
						ResultSet rs = (ResultSet)stmt.getObject(3);
						while (rs.next()) {
							//System.out.println(utilitarios.getHoraActual()+" recibo blob");
							Blob blob=rs.getBlob(1);
							//System.out.println(utilitarios.getHoraActual()+" inputStream");
							InputStream bodyOut = blob.getBinaryStream();
							//System.out.println(utilitarios.getHoraActual()+" crea data");
							data = new byte[ (int) blob.length()]; 
							nombreArchivo = rs.getString(2);
							//System.out.println(utilitarios.getHoraActual()+" read data");
							bodyOut.read(data);
							//rutaArchivo = "C:/tomcat/webapps/portalLiga2/pdf/"+nombreArchivo;
							//rutaArchivo = "C:/tomcat/webapps/portalLiga2/pdf/"+nombreArchivo;
							//System.out.println("rutaArchivosTicket: "+rutaArchivosTicket);
							rutaArchivo = rutaArchivosTicket+nombreArchivo;
							//System.out.println("rutaArchivo: "+rutaArchivo);
							
							/*FileOutputStream stream = new FileOutputStream(rutaArchivo);
							try {
							    stream.write(data);
							} finally {
							    stream.close();
							}*/
							
							BufferedOutputStream bs = null;
							FileOutputStream fs;
							fs = new FileOutputStream(new File(rutaArchivo));
							bs = new BufferedOutputStream(fs); 
							bs.write(data);
							bs.close();
							bs = null;
							
							String ruta1 = "\\sdf1";
							ruta1.replace("\\", "\\\\\\");
							//rutaReturn = "\\"+ruta1+"\\publica\\"+nombreArchivo;
							//rutaReturn  = "C:\\tomcat\\webapps\\portalLiga2\\archivos\\"+nombreArchivo;
							rutaReturn  = rutaVer+nombreArchivo;
							//System.out.println("rutaReturn: "+rutaReturn);
							//System.out.println(utilitarios.getHoraActual()+" FIN while");
						}
			       } catch (FileNotFoundException e) {  
			    	   System.out.println(utilitarios.getHoraActual()+" Error file not found");
			           // TODO  
			       } catch (IOException e) {  
			    	   System.out.println(utilitarios.getHoraActual()+" Error IO Exception");
			           // TODO  
			       } finally{
			          	conn.close();
			   			conn = null;
			       }
			       //System.out.println(utilitarios.getHoraActual()+" return data");
			       //return rutaReturn;
			       return data;
			   }  
			   
			  public String openFileTicket(String idTicket) throws SQLException, IOException
			   {  
				  Connection conn = ConexionPool.getConnectionPool();	
			       byte[] data =null;  
			       String nombreArchivo;
			       String rutaArchivo = "";
			       String rutaReturn = "";
			       try {  
			    	    //System.out.println(utilitarios.getHoraActual()+" inicio Clase getFile");
						String query = "{ call "+pkgVar+".Pkg_tic_ticket.getTicketFile(?,?,?) }"; 	       
						CallableStatement  stmt = conn.prepareCall(query);
						stmt.setString(1, idTicket);
						stmt.setString(2, "T");
						stmt.registerOutParameter(3, OracleTypes.CURSOR);
						stmt.execute();
						ResultSet rs = (ResultSet)stmt.getObject(3);
						while (rs.next()) {
							//System.out.println(utilitarios.getHoraActual()+" recibo blob");
							Blob blob=rs.getBlob(1);
							//System.out.println(utilitarios.getHoraActual()+" inputStream");
							InputStream bodyOut = blob.getBinaryStream();
							//System.out.println(utilitarios.getHoraActual()+" crea data");
							data = new byte[ (int) blob.length()]; 
							nombreArchivo = rs.getString(2);
							//System.out.println(utilitarios.getHoraActual()+" read data");
							bodyOut.read(data);
							//rutaArchivo = "C:/tomcat/webapps/portalLiga2/pdf/"+nombreArchivo;
							//rutaArchivo = "C:/tomcat/webapps/portalLiga2/pdf/"+nombreArchivo;
							System.out.println("rutaArchivosTicket: "+rutaArchivosTicket);
							rutaArchivo = rutaArchivosTicket+nombreArchivo;
							System.out.println("rutaArchivo: "+rutaArchivo);
							
							/*FileOutputStream stream = new FileOutputStream(rutaArchivo);
							try {
							    stream.write(data);
							} finally {
							    stream.close();
							}*/
							
							BufferedOutputStream bs = null;
							FileOutputStream fs;
							fs = new FileOutputStream(new File(rutaArchivo));
							bs = new BufferedOutputStream(fs);
							bs.write(data);
							bs.close();
							bs = null;
							
							String ruta1 = "\\sdf1";
							ruta1.replace("\\", "\\\\\\");
							//rutaReturn = "\\"+ruta1+"\\publica\\"+nombreArchivo;
							//rutaReturn  = "C:\\tomcat\\webapps\\portalLiga2\\archivos\\"+nombreArchivo;
							rutaReturn  = rutaVer+nombreArchivo;
							//System.out.println(utilitarios.getHoraActual()+" FIN while");
						}
			       } catch (FileNotFoundException e) {  
			    	   System.out.println(utilitarios.getHoraActual()+" Error file not found");
			           // TODO  
			       } catch (IOException e) {  
			    	   System.out.println(utilitarios.getHoraActual()+" Error IO Exception");
			           // TODO  
			       } finally{
			          	conn.close();
			   			conn = null;
			       }
			       //System.out.println(utilitarios.getHoraActual()+" return data");
			       return rutaReturn;
			   }  			  
			  
			   public byte[] getEventoFile(String idTicket) throws SQLException, IOException
			   {  
				   Connection conn = ConexionPool.getConnectionPool();	
			       byte[] data =null;  
			       try {  
			    	    //System.out.println(utilitarios.getHoraActual()+" inicio Clase getFile");
						String query = "{ call "+pkgVar+".Pkg_tic_ticket.getTicketFile(?,?,?) }"; 	       
						CallableStatement  stmt = conn.prepareCall(query);
						stmt.setString(1, idTicket);
						stmt.setString(2, "E");
						stmt.registerOutParameter(3, OracleTypes.CURSOR);
						stmt.execute();
						ResultSet rs = (ResultSet)stmt.getObject(3);
						while (rs.next()) {
							Blob blob=rs.getBlob(1);
							InputStream bodyOut = blob.getBinaryStream();
							data = new byte[ (int) blob.length()]; 
							bodyOut.read(data);
						}
			       } catch (FileNotFoundException e) {  
			    	   System.out.println(utilitarios.getHoraActual()+" Error file not found");
			           // TODO  
			       } catch (IOException e) {  
			    	   System.out.println(utilitarios.getHoraActual()+" Error IO Exception");
			           // TODO  
			       } finally{
			          	conn.close();
			   			conn = null;
			       }
			       return data;  
			   } 
			   
				public List<ComboDTO> getChekList(String IdTChkL) throws SQLException, IOException{
					 Connection conn = ConexionPool.getConnectionPool();	
					List<ComboDTO> listUserPerf = new ArrayList<ComboDTO>();
						try {
							String query = "{ call "+pkgVar+".Pkg_tic_ticket.getChekList(?,?) }"; 	       
							CallableStatement  stmt = conn.prepareCall(query);
							stmt.setString(1, IdTChkL);
							stmt.registerOutParameter(2, OracleTypes.CURSOR);
							stmt.execute();
							ResultSet rs = (ResultSet)stmt.getObject(2);
							while (rs.next()) {
								ComboDTO sopMA = new ComboDTO();
								sopMA.setId("0");
								sopMA.setDesc(rs.getString(1));
								sopMA.setId2("1");
								sopMA.setDesc2("img/checkboxDis.gif");
								listUserPerf.add(sopMA);
				            }
							
				            rs.close();
				            stmt.close();
				        } catch (SQLException ex) {  
				           log.error(horaActual+" Error TicketDAO.getChekList SQLException: " +ex.getMessage());
				        	System.out.println(ex.getMessage());
				        } finally {
				          	conn.close();
				   			conn = null;
				        }
				        return listUserPerf;		
					}		
				
				 public int setChekDel(String id, String idUser) throws SQLException, IOException{
						int idMov = 0;
						Connection conn = ConexionPool.getConnectionPool();	 
								try {						
									String query = "{ call "+pkgVar+".Pkg_tic_ticket.setChekDel(?,?) }";
									CallableStatement  stmt = conn.prepareCall(query);
									stmt.setString(1, id);
									stmt.setString(2, idUser);
									stmt.execute();
									stmt.close();
								} catch (SQLException ex) {  
									log.error(horaActual+" Error TicketDAo.setChekDel SQLException: " +ex.getMessage());
									System.out.println(ex.getMessage());				
								} finally {
								 	conn.close();
						   			conn = null;
									//System.out.println(horaActual+" Borrar IdPagoDet: "+pdVO.getIdPagoDet());
									log.info(horaActual+" Borrar IdPagoDet: "+id);
									
								}
						return idMov;
							
					}
}

